/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.gammapeit.jms.messagedrivenbean;

import com.gammapeit.ejb.mail.MailLocal;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.EJB;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import javax.mail.MessagingException;

/**
 *
 * @author usuario
 */
@MessageDriven(mappedName = "jms/MailMessagesQueue", activationConfig = {
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
})
public class MailMessageDB implements MessageListener {
    
    @EJB
    private MailLocal localMail;
    
    public MailMessageDB() {
    }
    
    @Override
    public void onMessage(Message message) {
        try {
            TextMessage textMessage = (TextMessage) message;
            
            localMail.enviar(obtenerReceptores(textMessage.getObjectProperty("receptores").toString()), 
                    textMessage.getObjectProperty("mensaje").toString(), textMessage.getObjectProperty("asunto").toString());
            
        } catch (JMSException ex) {
            Logger.getLogger(MailMessageDB.class.getName()).log(Level.SEVERE, null, ex);
        } catch (MessagingException ex) {
            Logger.getLogger(MailMessageDB.class.getName()).log(Level.SEVERE, null, ex);
        } catch (UnsupportedEncodingException ex) {
            Logger.getLogger(MailMessageDB.class.getName()).log(Level.SEVERE, null, ex);
        } 
    }
    
    /**
     * Método que obtiene los receptores de un String con los correos separados por ;
     * @param receptores, string con los receptores separados por ;
     * @return List<String>, lista con los correos de los receptores
     */
    private List<String> obtenerReceptores(String receptores){
        List<String> receptoresList = new ArrayList<String>();
        String[] arregloReceptores = receptores.split(";");
        
        for(String receptor : arregloReceptores){
            receptoresList.add(receptor);
        }
        return receptoresList;
    }
}
